home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Bavarian / Bavarian #197 (19xx)(APS Electronic).zip / Bavarian #197 (19xx)(APS Electronic).adf / FORTRAN < prev    next >
Text File  |  1989-01-11  |  14KB  |  437 lines

  1.     -----------------------------------------------
  2.     |             BC-FORTRAN77 Vers.1.3C          |
  3.     |  Copyright: Andre Köstli                    |
  4.     |     1990    Martin-Luther-Str.63            |
  5.     |             D7000 Stuttgart 50              |
  6.     |---------------------------------------------|
  7.     | Die Version "C" von BC-FORTRAN77, bestehend |
  8.     | aus den nachfolgend beschriebenen 5 Dateien,|
  9.     | ist vollständig von mir programmiert.  Ich  |
  10.     | gestatte freies Nutzungsrecht an Vers.C für |
  11.     | nichtkommerzielle Anwendungen, alle Rechte  |
  12.     | bleiben jedoch bei mir, insbesondere ist der|
  13.     | Verkauf der Vers.C, auch im Zusammenhang mit|
  14.     | anderen Produkten, nicht erlaubt. Jeder Ko- |
  15.     | pie ist dieser Text unverändert beizufügen. |
  16.     | Für kommerzielle Anwendungen ist die Vers.P |
  17.     | vorgesehen, die lizenzpflichtig ist.        |
  18.     | Die Anwendung für militärische Zwecke oder  |
  19.     | entsprechende Forschung ist verboten!       |
  20.     | März 1990                          A.Köstli |
  21.     -----------------------------------------------
  22.  
  23.  
  24. BC-FORTRAN77 Version C ist Teil eines umfangreichen
  25. Entwicklungssystems, der Vers.P (siehe unten). Vers.C
  26. soll in einfacher Weise den für Programmierkurse nötigen
  27. Compiler zur Verfügung stellen. Dem kommt entgegen, dass
  28. diese Software fast identisch auf AMIGA, ATARI ST und
  29. MS-DOS Rechnern läuft.
  30.  
  31.  
  32. BC-FORTRAN77 Vers.P
  33. -------------------
  34.  
  35. BC-FORTRAN77 Vers.P ist ein umfangreiches Entwicklungs-
  36. system, das ausser Compiler und Linker auch noch Editor,
  37. Precompiler und Versionsverwaltung unter einer Benutzer-
  38. oberfläche vereinigt. Dabei wird dafür gesorgt, dass im
  39. Entwicklungszyklus automatisch nur die jeweils verän-
  40. derten Unterprogramme neu übersetzt werden; selbst bei
  41. Programmen mit mehreren hundert Unterprogrammen ergibt
  42. sich so ein Entwicklungsschritt (Editieren, übersetzen,
  43. linken und starten) von wenigen Sekunden. Mathematische
  44. Koprozessoren werden in Vers.P unterstützt, ebenso wie
  45. spezielle Befehle des 68020 Prozessors.
  46.  
  47. Vers.P enthält einen komfortablen Debugger auf Quelltext
  48. Basis zum interaktiven Austesten sowie einige Biblio-
  49. theken die u.a. die Verwendung der AMIGA Libraries Exec,
  50. Dos, Graphics und Intuition ermöglichen.
  51.  
  52. Inklusive 150 Seiten Handbuch kostet BC-FORTRAN77 Vers.P
  53. DM 350.- und kann bei der oben angegebenen Adresse
  54. bestellt werden. (Bitte AMIGA oder ATARI ST angeben. Für
  55. MS-DOS existiert Vers.P derzeit nicht.)
  56.  
  57.  
  58.  
  59. BC-FORTRAN77 Vers.C
  60. -------------------
  61.  
  62. BC-FORTRAN77 Vers.C, auf die sich der Rest dieses Textes
  63. bezieht, besteht aus folgenden Dateien:
  64.  
  65.     LIES.TXT    Dieser Text
  66.     BCF         Compiler
  67.     BCL         Linker
  68.     BCRTSY      Laufzeitsystem
  69.     MATHLIB.B   Bibliothek mit Standardfunktionen
  70.  
  71. Wird eine Kopie angefertigt, müssen immer alle Dateien
  72. unverändert übernommen werden.
  73.  
  74. Auf dem AMIGA erfodert BC-FORTRAN77 1MB RAM und arbeitet
  75. unter dem CLI oder der Shell.
  76.  
  77.  
  78.  
  79. Installation.
  80. -------------
  81.  
  82. Die einfachste Arbeitsweise ergibt sich, wenn nur in
  83. einem Directory gearbeitet wird, in dem dann alle
  84. Dateien von BC-FORTRAN77 stehen.
  85.  
  86. Sollen mehrere Directories verwendet werden, so
  87. installiert man mit folgenden CLI-Kommandos:
  88.  
  89.     COPY BC? C:
  90.     COPY BCRTSY S:
  91.     COPY MATHLIB.B S:
  92.  
  93.  
  94. Compiler
  95. --------
  96.  
  97. Der Compiler wird gestartet mit
  98.  
  99.     BCF [-Option...] Datei...
  100.  
  101. Enthält Datei keinen Punkt, so wird .F angehängt.
  102. Die übersetzte Form der Programme wird in Datei.B
  103. abgelegt.
  104.  
  105. Beispiel:
  106.  
  107.     BCF -D TEST.F
  108.  
  109. Übersetzt TEST.F mit Debug-Option nach TEST.B
  110.  
  111.     BCF TEST SUB
  112.  
  113. Übersetzt TEST.F nach TEST.B und SUB.F nach SUB.B
  114.  
  115.     BCF TEST.X.Y
  116.  
  117. übersetzt TEST.X.Y nach TEST.B (Achtung!).
  118.  
  119.  
  120. Compiler Optionen
  121. -----------------
  122.  
  123.     -D      Debug, fasst -BVL zusammen.
  124.  
  125.     -B      deBugcode, impliziert -H und erzeugt
  126.                 ausserdem Code für Debuggeraufrufe,
  127.                 zum Überprüfen von Feldgrenzen und
  128.                 Substrings.
  129.  
  130.     -H      parcHeck, Code zum Überprüfen der Parameter-
  131.                 listen und auf Stacküberlauf erzeugen.
  132.  
  133.     -V      Varlist: Variablenliste für Debugger.
  134.  
  135.     -L      Lineslist: Zeilennummernliste für Debugger.
  136.  
  137.     -U      Uppercase: Klein- in Grossbuchstaben wandeln
  138.                 (ausser in Characterkonstanten und
  139.                 Formaten). Fehlt diese Option, so sind
  140.                 xy, XY, Xy und xY vier verschiedene
  141.                 Variablen!
  142.  
  143.     -F      Freeinput: Quellprogramm nicht im FORTRAN
  144.                 Format. Nichtstandart!
  145.  
  146.     -P      Protokoll: Ausgabe der übersetzten Zeilen.
  147.  
  148.  
  149. Sprachumfang
  150. ------------
  151.  
  152. BC-FORTRAN77 übersetzt den vollständigen Standard nach
  153. ANSI/ISO. Der Sprachstandard wird allerdings durch
  154. einige Besonderheiten verletzt (meistens werden diese
  155. als Erweiterungen bezeichnet). Ich empfehle dringend,
  156. diese Dialektkonstrukte nicht zu verwenden, da sie nicht
  157. standardisiert und damit nicht genau definiert sind.
  158.  
  159. Die wichtigsten dieser Besonderheiten:
  160.  
  161.     INTEGER*1       8 bit INTEGER
  162.     INTEGER*2      16 bit INTEGER
  163.     INTEGER*4      wie INTEGER
  164.     LOGICAL*1       8 bit LOGICAL
  165.     LOGICAL*2      16 bit LOGICAL
  166.     LOGICAL*4      wie LOGICAL
  167.     IMPLICIT NONE  abschalten der impliziten Typdef.
  168.     COMMON /%adr/  Absoluter Common, adr ist Konstante
  169.                         oder einfache Variable.
  170.     EQUIVALENCE()  zwischen Character und anderen Typen
  171.                    sowie Mischen im Common.
  172.     Rekursive Unterprogrammaufrufe.
  173.     Namen mit max. 8 Zeichen (Standart: 6).
  174.  
  175.  
  176. Als wichtigste Beschränkungen gibt es:
  177.  
  178.     32kB Code pro Unterprogramm
  179.     32kB SAVE/DATA pro Unterprogramm oder Blockdata
  180.     700  Unterprogramme pro Datei
  181.     500  Verschiedene Commons pro Datei.
  182.  
  183. Daneben gibt es eine Reihe von Beschränkungen, die bei
  184. unvernünftig grossen Unterprogrammen zu Fehlermeldungen
  185. führen, meistens wäre dann aber ohnehin die 32kB Code
  186. Grenze überschritten.
  187.  
  188.  
  189. Linker
  190. ------
  191.  
  192. Der Linker wird gestartet mit:
  193.  
  194.     BCL [-Optionen...] Datei...
  195.  
  196. Enthält Datei keinen Punkt, so wird .B angehängt.
  197. Die Programmdatei wird mit dem Namen der ersten Datei,
  198. aber ohne .B, gespeichert. Werden Mathematische
  199. Standardfunktionen verwendet, so muss auch die Datei
  200. MATHLIB.B aufgeführt werden. Das Laufzeitsystem BCRTSY
  201. wird automatisch geladen.
  202.  
  203. Beispiel:
  204.  
  205.     BCL -S16 TEST SUB MATHLIB
  206.  
  207. oder
  208.  
  209.     BCL -S16 TEST.B SUB.B MATHLIB.B
  210.  
  211. Linkt die Dateien TEST.B und SUB.B und speichert unter
  212. TEST das lauffähige Programm, das eine Stackgrösse von
  213. 16kB verwendet.
  214.  
  215.  
  216. Linker Optionen
  217. ---------------
  218.  
  219.     -Sn     Stackgrösse für das zu erzeugende Programm
  220.                 wird auf n kB gesetzt. Fehlt diese
  221.                 Option, so wird ein sehr grosser Stack
  222.                 angenommen. Auf dem Stack werden alle
  223.                 lokalen Variablen/Felder einer Unter-
  224.                 programmverschachtelung abgelegt.
  225.  
  226.     -O      Optimiertes Linken: nirgends aufgerufene
  227.                 Unterprogramme werden weggelassen.
  228.  
  229.     -P      Protokoll: Liste der Commonblöcke und
  230.                 Programmmodule.
  231.  
  232.  
  233. Beschränkungen
  234. --------------
  235.  
  236. Die wichtigste Beschränkung liegt in der RAM Grösse: die
  237. zu erzeugende Programmdatei (ohne Commons und Stack)
  238. kann maximal so gross sein, wie der grösste freie
  239. Speicherblock nach Laden von BCL. Andererseits kann, bei
  240. grossen Commons oder Stack, auch ein Programm erzeugt
  241. werden, dass im vorhandenen RAM nicht gestartet werden
  242. kann.
  243.  
  244. Die Anzahl Unterprogramme ist auf 3000, die Anzahl
  245. Commonblöcke auf 1500 beschränkt.
  246.  
  247.  
  248. Laufzeitsystem
  249. --------------
  250.  
  251. Das Laufzeitsystem BCRTSY enthält Routinen, die von
  252. einem FORTRAN77 Programm benötigt werden und wird vom
  253. Linker in jedes Programm eingebunden.
  254.  
  255. BCRTSY enthält:
  256.  
  257.     Arithmetikroutinen:
  258.         32 bit INTEGER Multiplikation/Division
  259.         REAL Arithmetik
  260.         DOUBLE PRECISION Arithmetik
  261.         Es wird ein eigenes Gleitkommaformat verwendet,
  262.         das mehr auf Geschwindigkeit denn auf
  263.         Genauigkeit ausgerichtet ist.
  264.         REAL: 6 Dezimalstellen, 32 bit
  265.          1 bit Vorzeichen, 23 bit Mantisse, 8 bit Exp.
  266.         DOUBLE PRECISION: 13 Dezimalstellen, 6 bit
  267.          1 bit Vorzeichen, 47 bit Mantisse, 16 bit Exp.
  268.         Ein mathematischer Koprozessor wird in Vers.C
  269.         nicht unterstützt.
  270.  
  271.     CHARACTER Routinen
  272.  
  273.     I/O Routinen
  274.  
  275.     Debugger:
  276.         Ein einfacher Debugger zur Fehlersuche.
  277.         Beim Start eines Programms, das mit -D oder -B
  278.         Option übersetzt wurde, wird ein Debugwindow
  279.         eröffnet. Nach einem Laufzeitfehler wird dort
  280.         eine Fehlermeldung ausgegeben und Eingabe
  281.         erwartet. Der Debugger kann aber auch durch
  282.         eine Eingabe in dieses Window aktiviert werden,
  283.         um den Programmlauf zu unterbrechen. Folgende
  284.         Tasten erkennt der Debugger als Kommando:
  285.  
  286.             S   Ausgabe des Subroutine-Call Stacks
  287.                 Mit Zeilennummern, falls -L Option beim
  288.                 Compilieren verwendet wurde.
  289.  
  290.             V   Variablen des aktuellen Unterprogramms
  291.                 mit aktuellen Inhalten, falls mit -V
  292.                 Option übersetzt wurde.
  293.  
  294.             Z   Programm beenden.
  295.  
  296.             Leertaste  Weiterrechnen, falls kein Lauf-
  297.                        fehler auftrat.
  298.  
  299.             U   Weiterrechnen bis Unterprogrammwechsel.
  300.  
  301.             L   Weiter mit ständiger Anzeige Sub+Zeile.
  302.  
  303.             P   Weiter mit Anzeige alle 200 Schritte.
  304.  
  305.             T   Einen Schritt (bis zum nächsten Label,
  306.                 Unterprogramm, ELSE, ENDIF oder DO)
  307.                 weiterrechnen.
  308.  
  309.  
  310. Bibliothek
  311. ----------
  312.  
  313. MATHLIB.B enthält die mathematischen Funktionen im
  314. vollen vom Standard vorgeschriebenen Umfang.
  315. Wenn beim Linken Fehlermeldungen wie z.B.
  316.  
  317.     External nicht gefunden: f_SQRT
  318.  
  319. auftauchen, so muss die MATHLIB.B beim Aufruf von BCL
  320. mit angegeben werden.
  321.  
  322.  
  323. Programmstart
  324. -------------
  325.  
  326. Eine von BCL erzeugte Programmdatei kann wie jedes
  327. andere Programm vom CLI aus gestartet werden. Da das
  328. Programm einen eigenen, mit der -S Option von BCL
  329. definierten Stack verwendet, spielt das CLI-Kommando
  330. STACK keine Rolle. Falls das Programm Eingabe vom
  331. Tastatur erwartet ( READ(*,... ), darf man nicht
  332. vergessen, das entsprechende Window zu aktivieren, falls
  333. ein Debugwindow eröffnet wurde.
  334.  
  335.  
  336. Fehlermeldungen
  337. ---------------
  338.  
  339. Die Fehlermeldungen von Compiler, Linker und
  340. Laufzeitsystem sollten, bis auf die folgende Ausnahme,
  341. selbsterklärend sein. Die vollständige Auflistung (26
  342. Seiten im Handbuch der Vers.P) würde den Rahmen dieser
  343. Beschreibung sprengen.
  344.  
  345.    IO-Error: Nummer
  346.         Ein-/Ausgabefehler; kann abgefangen werden,
  347.         indem im IO-Statement der IOSTAT= Parameter
  348.         angegeben wird. Nummer ist derselbe Wert, der
  349.         auch in der IOSTAT Variable zurückgegeben wird.
  350.  
  351.     Nummer
  352.  
  353.     -1   Dateiende.
  354.     -2   Dateiende inmitten eines Records.
  355.     1    Dateinummer bereits verwendet (OPEN).
  356.     2    Zu viele Dateien (OPEN). Max. 32 Dateien.
  357.     3    Dateiname zu lang (OPEN).Max. 31 Zeichen.
  358.     5    Dateinummer nicht eröffnet. Nur die Nummern
  359.            5 und 6 können ohne OPEN verwendet werden.
  360.     6    Formatiert/unformatiert Widerspruch.
  361.     7    REC-Parameter für Datei mit ACCESS='SEQUENTIAL'
  362.     8    BACKSPACE, REWIND, ENDFILE für diese Datei
  363.          nicht möglich (AUX: und PRN:).
  364.     10   Internal I/O nur formatiert.
  365.     20   INTEGER Überlauf bei Eingabe.
  366.     21   Datenfehler bein Listengesteuerter Eingabe,
  367.          z.B. fehlende Apostroph für Zeichenketten.
  368.     22   Unerwartetes Dateiende.
  369.     23   Record zu lang.
  370.     24   Lesefehler bei UNFORMATTED SEQUENTIAL.
  371.     30   Formatelement und I/O-Listelement passen nicht
  372.            zusammen.
  373.            INTEGER benötigt ein I-Formatelement,
  374.            REAL, DOUBLE PRECISION (COMPLEX) ein (zwei)
  375.              F-, G-, E- oder D-Formatelemente,
  376.            LOGICAL ein L-Formatelement,
  377.            CHARACTER ein A-Formatelement.
  378.     31   Formatelement L: T oder F erwartet (Eingabe)
  379.     32   Formatelement I: unerwartetes Zeichen (Eingabe)
  380.            Leerzeichen, Vorzeichen und Ziffern erlaubt.
  381.     33   Formatelemente E, F oder D: unerwartetes
  382.            Zeichen (Eingabe).
  383.            Leerzeichen, Vorzeichen, Ziffern,
  384.            Dezimalpunkt, E, e, D oder d (für Exponent)
  385.            erlaubt.
  386.     34   Zu viele ( in Format.
  387.     35   Zu viele ) in Format.
  388.     36   Ziffernfolge an unerlaubter Stelle in Format.
  389.     37   Formatelement nicht erkannt.
  390.     38   . fehlt in F, E, G oder D Formatelement.
  391.     39   4Htext oder 'text' in Format für READ.
  392.            In FORTRAN66 konnte damit Text in ein Format
  393.            hineingelesen werden; in FORTRAN77 nicht
  394.            mehr erlaubt.
  395.     40   Exponent zu gross für gegebenes Format.
  396.     42   Formatelement zu lang. Max. Länge des internen
  397.            Recordpuffers (80 Zeichen).
  398.     43   Internal I/O, Record zu lang.
  399.     44   TL, Record zu lang. Ist ein Record länger als
  400.            der interne Recordpuffer, kann nicht mehr
  401.            nach links tabuliert werden.
  402.     45   Feldlänge 0 bei I,L,F,E,G,D Formatelement.
  403.  
  404.     1000+n  Amiga-Dos Error n
  405.             Siehe Amiga-Dos Handbuch, Anhang A.
  406.  
  407.     1202 Datei wird benützt.
  408.     1203 Datei existiert bereits.
  409.     1204 Inhaltsverzeichnis nicht gefunden.
  410.     1205 Datei nicht gefunden.
  411.     1206 Ungültige Window-Parameter
  412.     1209 Funktion auf diesem Gerät nicht möglich.
  413.     1210 Ungültiger Dateiname.
  414.     1212 Verwechslung Dateiname/Inhaltsverzeichnis.
  415.     1213 Disk nicht validiert.
  416.     1214 Disk schreibgeschützt.
  417.     1218 Disk nicht vorhanden.
  418.     1221 Disk voll.
  419.     1222 Datei geschützt gegen Löschen.
  420.     1223 Datei geschützt gegen Schreiben.
  421.     1224 Datei geschützt gegen Leseen.
  422.     1225 Keine Amiga-Dos Disk.
  423.     1226 Keine Disk vorhanden.
  424.     1232 Kein Platz für Eintrag.
  425.  
  426.  
  427. Probleme
  428. --------
  429.  
  430. Sollte jemand der Meinung sein, dass der Compiler,
  431. Linker oder die Bibliothek fehlerhaft sind, bitte ich um
  432. schriftliche Mitteilung. Ich bitte um Verständnis, dass
  433. für dieses Produkt (im Gegensatz zur kommerziellen
  434. Version P) Updateservice und telefonische Beratung nicht
  435. möglich sind.
  436.  
  437.